# _*_ coding: UTF-8 _*_
# @Time     : 2020/10/14 下午 03:32
# @Author   : Li Jie
# @Site     : http://www.cdtest.cn/
# @File     : dict_test.py
# @Software : PyCharm

# 字典：dict
# 字典不是序列，没有index，元素是无序的

# 字典的定义:dict = {key1:value1,key2:value2,...}
# key必须是可以hash的类型，一般用数值或者字符串，不可以重复，必须唯一
# value可以是任意任意类型，可以重复
dict1 = {
    '名字': '姚明',
    '身高': 226,
    '体重': 150
}

# 两层字典的定义：
dict2 = {
    '姚明': {
        '身高': 226,
        '体重': 150
    },
    '科比': {
        '身高': 202,
        '体重': 120
    }
}

# 字典的元素访问：通过key来访问对应value
print(dict1['名字'])
print(dict1['身高'])

print(dict2['姚明']['体重'])
print(dict2['科比']['身高'])

# 两层list：
list1 = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
print(list1[0][1])
print(list1[1][2])
print(list1[2][2])

print('-----------------------------------------')
# 字典的主要操作：增，删，改，查

# 新增：新增一对键值对
# 对不存在的键赋值就是新增
dict1['年龄'] = 18
print(dict1)

# 修改：
# 对存在的键赋值就是修改value
dict1['身高'] = 175
print(dict1)

print('-----------------------------------------')
# 删除:
# 1.dict.pop('键')
dict1.pop('体重')
print(dict1)

# del dict[键]
del dict1['身高']
print(dict1)

print('-----------------------------------------')
# 遍历查询
# 直接遍历字典,得到的是key
dict1 = {'名字': '姚明', '年龄': 18}
for key in dict1:
    print(f'key:{key}->value:{dict1[key]}')

#获取所有键值对
items = dict1.items()
print(items)
for item in items:
    print(item)

# 获取所有的键
k = dict1.keys()
print(k)

# 获取所有的值
v = dict1.values()
print(v)

print('-----------------------------------------')
#字典推导式
import random
dict1 = {i:random.randint(0,101) for i in range(1,5)}
print(dict1)
